﻿Receive_WM_COPYDATA(wParam, lParam){
	global
	local StringAddress, MatchStr, MatchStr1, MatchStr2, tarr, CopyOfData
	StringAddress := NumGet(lParam + 2*A_PtrSize)  ; 获取 CopyDataStruct 的 lpData 成员.
	CopyOfData := StrGet(StringAddress)  ; 从结构中复制字符串.
	If RegExMatch(CopyOfData, "^<<([^ ]+)>>(.*)$", MatchStr){
		%MatchStr1%:=MatchStr2, CopyOfData:=""
		If (MatchStr1="CloudResult"&&!InStr(srf_all_input,func_key)){
			tarr:=StrSplit(MatchStr2,"`n")
			If (tarr[2]&&!qucongtable[tarr[2]]&&StrReplace(srf_all_Input_["py"],"\")=tarr[3]){
				tarr[0]:="<Cloud>|-1", tarr[3]:=""
				Loop % ListNum-1
					If (jichu_for_select_Array[A_Index+1, 0]="<Cloud>|-1"){
						jichu_for_select_Array[A_Index+1, 1]:=tarr[1], jichu_for_select_Array[A_Index+1, 2]:=tarr[2], tarr:=""
						Break
					}
				If IsObject(tarr)
					jichu_for_select_Array.InsertAt(2,tarr)
				Gosub houchuli
				Gosub srf_tooltip_fanye
			} Else If (tarr[3]="timeout"){
				Loop % ListNum-1
					If (jichu_for_select_Array[A_Index+1, 0]="<Cloud>|-1"){
						jichu_for_select_Array[A_Index+1, 2]:="获取失败！", tarr:=A_Index+1
						Break
					}
				Gosub srf_tooltip_fanye
				jichu_for_select_Array[tarr, 2]:=""
			}
		}
	}
	Return true  ; 返回 1 (true) 是回复此消息的传统方式.
}

Send_WM_COPYDATA(ByRef StringToSend, TargetScriptTitle){  ; 在这种情况中使用 ByRef 能节约一些内存.
	global YzPID
	VarSetCapacity(CopyDataStruct, 3*A_PtrSize, 0)  ; 分配结构的内存区域.
	; 首先设置结构的 cbData 成员为字符串的大小, 包括它的零终止符:
	SizeInBytes := (StrLen(StringToSend) + 1) * (A_IsUnicode ? 2 : 1)
	NumPut(SizeInBytes, CopyDataStruct, A_PtrSize)  ; 操作系统要求这个需要完成.
	NumPut(&StringToSend, CopyDataStruct, 2*A_PtrSize)  ; 设置 lpData 为到字符串自身的指针.
	; Prev_DetectHiddenWindows := A_DetectHiddenWindows
	; Prev_TitleMatchMode := A_TitleMatchMode
	; DetectHiddenWindows On
	; SetTitleMatchMode 2
	; 必须使用发送 SendMessage 而不是投递 PostMessage.
	SendMessage, 0x4a, %YzPID%, &CopyDataStruct,, %TargetScriptTitle%  ; 0x4a 为 WM_COPYDAT
	; DetectHiddenWindows %Prev_DetectHiddenWindows%  ; 恢复调用者原来的设置.
	; SetTitleMatchMode %Prev_TitleMatchMode%         ; 同样.
	Return ErrorLevel  ; 返回 SendMessage 的回复给我们的调用者.
}